package org.example.smartbuy;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import static org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.controller;

public class CodeGenerator {
    public static void main(String[] args) {
        // 使用 FastAutoGenerator 快速配置代码生成器
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/smartbuy?serverTimezone=UTC", "root", "liuxunhao123")
                .globalConfig(builder -> {
                    builder.author("Smarty Buy") // 设置作者
                            .outputDir("C:\\Users\\Administrator\\Desktop\\smartbuy\\smartbuy\\src\\main\\java\\org.example.smartbuy")// 输出目录
                            .dateType(DateType.TIME_PACK)
                            .disableOpenDir()
                            .enableSwagger(); //时间戳样式 全部时间

                })
                .packageConfig(builder -> {
                    builder.parent("com.example.smartbuy") // 设置父包名
                            .entity("entity") // 设置实体类包名
                            .mapper("mapper") // 设置 Mapper 接口包名
                            .service("service") // 设置 Service 接口包名
                            .serviceImpl("serviceImpl")// 设置 Service 实现类包名
                            .controller("controller"); // 设置 Controller 包名
                })

                .strategyConfig(builder -> {
                    builder.addInclude("cart", "inventory", "orderdetails", "orders", "payments", "productactions", "products","reviews","users") // 设置需要生成的表名
                            .entityBuilder()
                            .enableLombok() // 启用 Lombok
                            .enableTableFieldAnnotation() // 启用字段注解
                            .controllerBuilder()
                            .enableRestStyle(); // 启用 REST 风格
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
                .execute(); // 执行生成
    }
}